﻿namespace IS.Projecto.DataAccessLayer
{
    using System;
    using System.Collections.Generic;
    using Modelo;

    public interface IDataRepository
    {
        #region Operações de Docentes

        Docente ReadDocente(int id);
        IList<Docente> ListAllDocentes();
        void WriteDocente(Docente docente);
        void WriteDocentes(IList<Docente> docente);

        #endregion

        #region Operações de Horarios

        Horario ReadHorario(int id);
        IList<Horario> ListHorarios(Curso curso, DateTime start, DateTime end);
        void WriteHorario(Horario horario);
        void WriteHorarios(IList<Horario> horarios);

        #endregion

        #region Operações de Inscrições

        Inscricao ReadInscricao(int id);
        IList<Inscricao> ListInscricoes(Curso curso);
        void WriteInscricao(Inscricao inscricao);
        void WriteInscricoes(IList<Inscricao> inscricoes);

        #endregion

        #region Operações de Cursos

        Curso ReadCurso(int id);
        IList<Curso> ListAllCursos();
        void WriteCurso(Curso curso);
        void WriteCursos(IList<Curso> curso);

        #endregion

        #region Operações de Salas

        Sala ReadSala(int id);
        IList<Sala> ListAllSalas();
        void WriteSala(Sala sala);
        void WriteSalas(IList<Sala> sala);

        #endregion

        #region Operações de Unidades Curriculares

        UnidadeCurricular ReadUnidadeCurricular(int id);
        IList<UnidadeCurricular> ListUnidadesCurriculares(Curso curso);
        void WriteUnidadeCurricular(UnidadeCurricular uc);
        void WriteUnidadeCurriculares(IList<UnidadeCurricular> uc);

        #endregion
    }
}